# The American Viewer: Political Consequences of Entertainment Media
# Eunji Kim and Shawn Patterson Jr 
# American Political Science Review 
# Replication File [Appendix I Table I1 and I2 Full Results]

library(foreign)
library(lfe)
library(haven)

# load table.2 csv file 


table2 <- read.csv("table2_censored.csv")



### TABLE I1 #### 

# primary vote share, OLS column (2)

ols_pri <- felm(trumpshare_primary~  RTG_9PM_Nov_May + romneyshare12_new + 
                  log(population_04 +1) +
                  log(medianHHI_04+1) + femaleP_04 + age65P_04 + whiteP_04 + blackP_04  +
                  collegeP_04 + foreignBP_04 + unemR_04   + samesex_census  + religion_allP +
                  log(avg_outflow_movers + 1) + log(avg_inflow_movers + 1 ) + pop_density.x   | 
                  STATE  | 0 | 0 , 
                data = table2, weights=table2$sum_CNTYTVHH) 

stargazer(ols_pri, no.space=TRUE,type="text" )

# primary vote share, IV (column (3)) 

iv_pri<- felm(trumpshare_primary~  romneyshare12_new + 
                log(population_04 +1) +
                log(medianHHI_04+1) + femaleP_04 + age65P_04 + whiteP_04 + blackP_04  +
                collegeP_04 + foreignBP_04 + unemR_04    +  samesex_census  + religion_allP +
                log(avg_outflow_movers + 1) + log(avg_inflow_movers + 1 ) + pop_density.x  | 
                STATE  | (RTG_9PM_Nov_May  ~ RTG_8PM_Nov_May)| 0 , 
              data = table2, weights=table2$sum_CNTYTVHH) 

stargazer(iv_pri,  no.space=TRUE,type="text")
# F statistic 
iv_pri$stage1$iv1fstat$RTG_9PM_Nov_May["F"]


# general vote share, OLS, column (4) 
ols_prez <- felm(trumpshare16_new ~ RTG_9PM_Nov_May + romneyshare12_new + 
                   log(population_04 +1) +
                   log(medianHHI_04+1) + femaleP_04 + age65P_04 + whiteP_04 + blackP_04  +
                   collegeP_04 + foreignBP_04 + unemR_04   + samesex_census  + religion_allP +
                   log(avg_outflow_movers + 1) + log(avg_inflow_movers + 1 ) + pop_density.x   | 
                   STATE  | 0 | 0 ,  data = table2, weights=table2$sum_CNTYTVHH) 

stargazer(ols_prez,  no.space=TRUE,type="text")


# general vote share, IV (column (5)) 

iv_prez<- felm(trumpshare16_new~  romneyshare12_new + 
                 log(population_04 +1) +
                 log(medianHHI_04+1) + femaleP_04 + age65P_04 + whiteP_04 + blackP_04  +
                 collegeP_04 + foreignBP_04 + unemR_04    +  samesex_census  + religion_allP +
                 log(avg_outflow_movers + 1) + log(avg_inflow_movers + 1 ) + pop_density.x  | 
                 STATE  | (RTG_9PM_Nov_May  ~ RTG_8PM_Nov_May)| 0 , 
               data = table2, weights=table2$sum_CNTYTVHH) 

stargazer(iv_prez, no.space=TRUE,type="text")
#F statistic 
iv_prez$stage1$iv1fstat$RTG_9PM_Nov_May["F"]


## full results, columns 2 to 5 (Table I1)

stargazer(ols_pri,  iv_pri,  ols_prez, iv_prez,  
          star.cutoffs = c(.05,.01,.001),
          title="Table 2 Columns 2-5 Full Results",
          dep.var.caption = "",
          label = "tab2",
          dep.var.labels=c('Primary - OLS',  'Primary - IV', 
                           'General - OLS', 'General - IV'),
          omit.stat=c("adj.rsq","LL","ser","f"),
          keep.stat = c("n"),
          no.space=TRUE,
          omit = c('STATE'),
          star.char = c("*", "**", "***"), 
          notes = c("* p<0.05; ** p<0.01; *** p<0.001"), 
          notes.append = F,
          notes.align="l",
          digits=3,
          type="text",
          align = TRUE)


### TABLE I2 #### 


## first stage results (full) (Table I2)

### column 1 

column1 <- felm(RTG_9PM_Nov_May ~ RTG_8PM_Nov_May +  
                  log(population_04 +1) +
                  log(medianHHI_04+1) + femaleP_04 + age65P_04 + whiteP_04 + blackP_04  +
                  collegeP_04 + foreignBP_04 + unemR_04   + samesex_census  + religion_allP + 
                  log(avg_outflow_movers + 1) + log(avg_inflow_movers + 1 ) + pop_density.x   | 
                  STATE  | 0 | 0 ,  data = table2, weights=table2$sum_CNTYTVHH) 
summary(column1)
stargazer(column1)

stargazer(column1,   
          star.cutoffs = c(.05,.01,.001),
          title="First Stage Results",
          dep.var.caption = "",
          label = "firststage",
          omit.stat=c("adj.rsq","LL","ser","f"),
          keep.stat = c("n"),
          no.space=TRUE,
          omit = c('STATE'),
          star.char = c("*", "**", "***"), 
          notes = c("* p<0.05; ** p<0.01; *** p<0.001"), 
          notes.append = F,
          notes.align="l",
          digits=3,
          type="text",
          align = TRUE)
